home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-11-15 | 5.9 KB | 157 lines |
- 10 '***************************************************************************
- 20 '* *
- 30 '* A PROGRAM TO DEMONSTRATE PRINT_CHARACTERS *
- 40 '* *
- 50 '* (C) COPYRIGHT 1984 *
- 60 '* by *
- 70 '* Michael L Hoyt *
- 80 '* *
- 90 '***************************************************************************
- 100 '
- 110 '************************ CHECK DISPLAY CARDS *****************************
- 120 '
- 130 DEF SEG=&H40 'segment address of display information
- 140 MODE=PEEK(&H49) 'offset of current mode
- 150 DEF SEG 're-establish BASIC'S data segment
- 160 IF MODE=0 OR MODE=1 OR MODE=4 OR MODE=5 THEN W=0 ELSE W=20 'place display
- 170 '
- 180 '***************************** INITIALIZE *********************************
- 190 '
- 200 IF W=0 THEN WIDTH 40 ELSE WIDTH 80 'set display width
- 210 SCREEN 0,1,0,0: KEY OFF: COLOR 7,0,0: CLS
- 220 GOSUB 1410 'load interface to PRINT_SCREEN
- 230 '
- 240 '*************************** OPENING SCREEN *******************************
- 250 '
- 260 LOCATE 3,W+11,0 'cursor off
- 270 PRINT "DEMONSTRATION PROGRAM"
- 280 LOCATE 4,W+20: PRINT "for"
- 290 COLOR 15: PRINT
- 300 LOCATE ,W+14: PRINT "PRINT_CHARACTERS"
- 310 COLOR 7
- 320 LOCATE ,W+17: PRINT "with the"
- 330 COLOR 15: PRINT
- 340 LOCATE ,W+17: PRINT "NEC 8023A"
- 350 COLOR 7
- 360 LOCATE ,W+13: PRINT "dot matrix printer"
- 370 LOCATE 18,1
- 380 PRINT "(c) Copyright 1984"
- 390 PRINT " by"
- 400 PRINT " Michael L Hoyt"
- 410 LOCATE 24,W+8: COLOR 23
- 420 PRINT "Press any key to continue";
- 430 COLOR 15
- 440 A$=INKEY$: IF A$="" THEN 440
- 450 '
- 460 '******************* SET DISPLAY OF ASCII CHARACTERS **********************
- 470 '
- 480 CLS
- 490 COLOR 7
- 500 LOCATE 1,W+2
- 510 PRINT "HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F"
- 520 LOCATE ,W+2
- 530 PRINT " KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE"
- 540 LOCATE ,W+2
- 550 PRINT " 2 OPEN ! " CHR$(34) " # $ % & ' ( ) * + , - . / OPEN"
- 560 LOCATE ,W+2
- 570 PRINT " 3 OPEN 0 1 2 3 4 5 6 7 8 9 : ; < = > ? OPEN"
- 580 LOCATE ,W+2
- 590 PRINT " 4 OPEN @ A B C D E F G H I J K L M N O OPEN"
- 600 LOCATE ,W+2
- 610 PRINT " 5 OPEN P Q R S T U V W X Y Z [ \ ] ^ _ OPEN"
- 620 LOCATE ,W+2
- 630 PRINT " 6 OPEN ` a b c d e f g h i j k l m n o OPEN"
- 640 LOCATE ,W+2
- 650 PRINT " 7 OPEN p q r s t u v w x y z { | } ~ " CHR$(127) " OPEN"
- 660 LOCATE ,W+2
- 670 PRINT " PRESETSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB6!>"
- 680 LOCATE ,W+2
- 690 PRINT " 8 OPEN <UNK! {0080}> END FOR NEXT DATA INPUT DIM READ LET GOTO RUN IF RESTORE GOSUB RETURN REM OPEN"
- 700 LOCATE ,W+2
- 710 PRINT " 9 OPEN STOP PRINT CLEAR LIST NEW ON WAIT DEF POKE CONT <0x9A!> <0x9B!> OUT LPRINT LLIST <0x9F!> OPEN"
- 720 LOCATE ,W+2
- 730 PRINT " A OPEN WIDTH ELSE TRON TROFF SWAP ERASE EDIT ERROR RESUME DELETE AUTO RENUM DEFSTR DEFINT DEFSNG DEFDBL OPEN"
- 740 LOCATE ,W+2
- 750 PRINT " PRESETSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB6!>"
- 760 LOCATE ,W+2
- 770 PRINT " B OPEN LINE WHILE WEND CALL <0xB4!> <0xB5!> <0xB6!> WRITE OPTION RANDOMIZE OPEN CLOSE LOAD MERGE SAVE COLOR OPEN"
- 780 LOCATE ,W+2
- 790 PRINT " OPEN OPEN"
- 800 LOCATE ,W+2
- 810 PRINT " C OPEN CLS MOTOR BSAVE BLOAD SOUND BEEP PSET PRESET SCREEN KEY LOCATE <0xCB!> TO THEN TAB( STEP OPEN"
- 820 LOCATE ,W+2
- 830 PRINT " OPEN OPEN"
- 840 LOCATE ,W+2
- 850 PRINT " D OPEN USR FN SPC( NOT ERL ERR STRING$ USING INSTR ' VARPTR CSRLIN POINT OFF INKEY$ <0xDF!> OPEN"
- 860 LOCATE ,W+2
- 870 PRINT " OPEN OPEN"
- 880 LOCATE ,W+2
- 890 PRINT " PRESETSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB6!>"
- 900 LOCATE ,W+2
- 910 PRINT " E OPEN <0xE0!> <0xE1!> <0xE2!> <0xE3!> <0xE4!> <0xE5!> > = < + - * / ^ AND OR OPEN"
- 920 LOCATE ,W+2
- 930 PRINT " F OPEN XOR EQV IMP MOD \ <UNK! {00F5}> <UNK! {00F6}> <UNK! {00F7}> <UNK! {00F8}> <UNK! {00F9}> <UNK! {00FA}> <UNK! {00FB}> <UNK! {00FC}> <UNK! {FD20}><UNK! {FE20}><UNK! {FF20}>OPEN"
- 940 LOCATE ,W+2
- 950 PRINT " SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD";
- 960 '
- 970 '************************** DISPLAY PROMPT ********************************
- 980 '
- 990 LOCATE 25,W+9: PRINT "Normal - Italics - Quit";
- 1000 COLOR 15: LOCATE 25,W+9: PRINT "N";
- 1010 LOCATE 25,W+20: PRINT "I";
- 1020 LOCATE 25,W+32: PRINT "Q";
- 1030 COLOR 7
- 1040 LOCATE 24,W+15: PRINT "To print, PRESS";
- 1050 '
- 1060 '*************************** GET USER RESPONSE ****************************
- 1070 '
- 1080 LOCATE 1,1,0 'cursor off
- 1090 A$=INKEY$: IF A$="" THEN 1090 'wait for response
- 1100 IF A$="i" OR A$="I" THEN 1240 'do italics print-screen
- 1110 IF A$="n" OR A$="N" THEN 1170 'do normal print-screen
- 1120 IF A$="q" OR A$="Q" THEN 1330 'end up
- 1130 BEEP: GOTO 1090
- 1140 '
- 1150 '********************** NORMAL TEXT SCREEN PRINT *************************
- 1160 '
- 1170 LPRINT CHR$(27) CHR$(62) 'set printer to unidirectional
- 1180 GOSUB 1510 'call interface to PRINT_SCREEN
- 1190 LPRINT CHR$(12) 'form feed to eject an 11" sheet
- 1200 GOTO 990 'done, so return
- 1210 '
- 1220 '********************** ITALICS TEXT SCREEN PRINT ************************
- 1230 '
- 1240 LPRINT CHR$(27) CHR$(62) 'set printer to unidirectional
- 1250 LPRINT CHR$(18) 'set printer (PRNT-CHR) to italics
- 1260 GOSUB 1510 'call interface to PRINT_SCREEN
- 1270 LPRINT CHR$(18) 'reset printer(PRT-CHR) to normal
- 1280 LPRINT CHR$(12) 'form feed to eject an 11" sheet
- 1290 GOTO 990 'done, so return
- 1300 '
- 1310 '********************************* END ***********************************
- 1320 '
- 1330 CLS
- 1340 LOCATE 3,10
- 1350 PRINT "End of demonstration..."
- 1360 LOCATE 10,1,1 'cursor back on
- 1370 END
- 1380 '
- 1390 '********************* INTERFACE TO PRINT_SCREEN ************************
- 1400 '
- 1410 DEF SEG 'establish BASIC'S data segment
- 1420 DIM PRTSC%(3) 'define variable to hold code string
- 1430 FOR X=0 TO 3 'load the code into the string
- 1440 READ PRTSC%(X) 'read data statement
- 1450 NEXT X 'loop until done
- 1460 RETURN 'done, so return
- 1470 DATA &H8955,&HCDE5,&H5D05,&H00CB: 'interface code
- 1480 '
- 1490 '****************** CALL INTERFACE TO PRINT_SCREEN **********************
- 1500 '
- 1510 LOCATE 25,W+7: PRINT " ";
- 1520 LOCATE 24,W+15: PRINT " ";
- 1530 DEF SEG 'set BASIC'S data segment
- 1540 SUBRT%=VARPTR(PRTSC%(0)) 'point to code string(variable)
- 1550 CALL SUBRT% 'call the code interface
- 1560 RETURN 'done, so return
-